<?php
namespace app\service\Protocol;

/**
 * MQTT协议接口
 * 定义所有协议适配器必须实现的方法
 */
interface ProtocolInterface
{
    /**
     * 构建指令消息
     * 
     * @param string $deviceId 设备标识（MAC或SN）
     * @param int $type 指令类型
     * @param array $params 指令参数
     * @return array MQTT消息数组 ['topic' => '...', 'message' => '...']
     */
    public function buildCommand(string $deviceId, int $type, array $params): array;

    /**
     * 获取下行主题（服务器发送指令给设备）
     * 
     * @param string $deviceId 设备标识
     * @return string MQTT主题
     */
    public function getDownlinkTopic(string $deviceId): string;

    /**
     * 获取上行主题（设备上报数据给服务器）
     * 
     * @param string $deviceId 设备标识
     * @return string MQTT主题
     */
    public function getUplinkTopic(string $deviceId): string;

    /**
     * 获取协议名称
     * 
     * @return string 协议名称
     */
    public function getName(): string;

    /**
     * 获取协议版本
     * 
     * @return string 协议版本
     */
    public function getVersion(): string;
}

